프로그래밍은 비인간적이다

  • 2025-07-26
  • 저자: AK

프로그래밍을 시작한지 얼마 안된 사람들을 관찰할 기회가 종종 있는데 몇 가지 공통점이 눈에 띈다. 이 사람들의 문제라기 보다는 대체로 프로그래밍이라는 분야 자체가(혹은 현재의 프랙티스가) 지나치게 비인간적이기 때문인 것 같다.

컴퓨터가 보내는 신호 읽기

컴퓨터가 보내는 신호를 종종 놓친다.

예를 들면 에러 메시지를 꼼꼼하게 읽지 않고 디버깅하는 등. 아마도 컴퓨터가 보내는 신호가 너무나 많아서 뭐가 중요한 신호인지 가려내지 못하고 있는 것으로 보인다. 개발 환경의 각종 인터페이스를 개선하면 부담을 약간 줄여줄 수도 있을 것만 같다.

정보 검색

네이버에서 검색하거나, 구글을 쓰더라도 한글로 검색을 하거나, 영어 키워드를 쓰더라도 적절한 용어를 넣지 못하거나, 검색 결과 페이지에 적절한 문서가 나왔는데 엉뚱한 문서를 클릭하거나, 적절한 문서를 클릭했지만 엉뚱한 곳을 읽는 등.

이 중 일부 문제는 쉽게 바로잡을 수 있으나(구글에서 검색하기, 한글 검색어 안쓰기), 나머지는 훈련이 제법 필요한 것 같다. 문제를 적절히 표현하는 검색 키워드를 이미 알고 있기도 쉽지 않고 어떤 사이트가 상대적으로 신뢰할 수 있는지 어떤 메타 정보가 중요한지도 판단하기 어려울거다.

정적 구조와 동적 프로세스

코드의 정적 구조와 동적 프로세스를 잘 시각화하지 못한다. (참고: 정적 프로그램과 동적 프로세스)

A 함수를 실행한 결과로 얻어진 변수를 이용하는 로직에 문제가 생겼을 때 A 함수를 살펴봐야 한다는 점을 알아차리기까지 좀 더 오랜 시간이 걸리는 것 같다. 모듈 사이의 의존 관계가 조금만 복잡해지면 종종 길을 잃는 것 같다.

이 문제도 어느 정도 시간이 지나야 나아질 수 있을 것 같다. 다만 몇몇 개념들(의존성 그래프, 루프 불변값, 계약, 책임 등)을 명시적으로 알려주면 실력 향상에 걸리는 시간을 조금 더 단축시킬 수도 있지 않을까 싶다.

인지부하

위에서 열거한 모든 문제는 아마도 인지부하와도 관련이 클 것 같다. 숙련된 개발자 입장에서는 프로그래밍의 많은 행위들에 습관 형성이 되어서 소위 자동적 처리가 되고 있을텐데, 초심자들은 아직 그런게 조금 부족할테니 인지 부하가 기본적으로 높은 상태이지 않을까.

숙련된 개발자가 초심자의 경험을 조금이라도 체험해보려면 이런걸 해보면 좋을 것 같다. 새로운 편집기, 새로운 프로그래밍 언어, 새로운 운영체제, 새로운 기술도메인, 새로운 업무 도메인에서 개발해보기. 생각만 해도 땀이 난다. 이걸 다 해내고 있는 초보 개발자들 존경스럽다.

2025 © ak